Skip to content

Show a first-run setup card on cold installs - #119

Merged
badcuban merged 5 commits into
mainfrom
feat/first-run-setup-card
Aug 7, 2026
Merged

Show a first-run setup card on cold installs#119
badcuban merged 5 commits into
mainfrom
feat/first-run-setup-card

Conversation

@badcuban

@badcuban badcuban commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

Implements section 1 of the approved onboarding mockup (docs/design/onboarding-setup-card.html) — the proactive piece of the fresh-install work: a setup card that greets a genuinely new install instead of dropping it into a bare draft thread. Plus one small approved UX tweak to the provider update card.

Setup card

  • Boxless, hairline-divided rows in the draft thread's empty-state slot (replaces, never stacks with, the "What's next" prompt). One live row per provider using the settings page's status language and dot colors; rows update from the streamed provider snapshots, so the dot flips green while the sign-in terminal is still open.
  • Actions: Sign in runs the provider's login in the in-app terminal (same flow as the composer notice), Install guide routes to provider settings, project row Change opens the add-project palette. Start first thread enables once one provider is usable and a project exists.
  • Shows only on a genuine cold start: local draft thread, not General Chat, not hosted/phone, environment bootstrapped, and no user message ever sent in the environment (latestUserMessageAt across the environment's threads — a plain thread count would never be zero because the launch-folder bootstrap creates one). "Skip for now", "Start first thread", and any send dismiss it permanently per environment (schema-validated localStorage, versionSkew pattern).
  • While the card is visible the ambient provider-status notice is suppressed — the card states the same problem with the same fix actions. The held-send notice is not suppressed (it responds to an explicit send).

Update card tweak (second commit)

Multi-provider "Updates available" now names each target version — "Codex v1.1.0 and Claude v2.1.197 can be updated." — matching the single-provider title that already did. Same one-line height.

Testing

  • vp fmt, vp lint, vp run typecheck green.
  • Unit: firstRunSetup.test.ts 11 cases (show/hide decision, row derivation, start enablement), ProviderUpdateLaunchNotification.logic.test.ts 33 green.
  • Browser: FirstRunSetupCard 3 (rows, dots, actions with mixed provider states), ChatView 109 including the palette flake passing first try.
  • Cold-boot screenshot verification runs pre-merge; gallery link added when it lands.

Implements section 1 of the approved onboarding mockup
(docs/design/onboarding-setup-card.html): a brand-new install's empty
draft thread now opens on a boxless, hairline-divided setup card instead
of the bare "What's next" prompt. One live row per provider (settings
status language, dot flips green while the sign-in terminal is open, Sign
in runs the same auth flow the composer notice uses, Install guide routes
to provider settings), a project row for the bootstrapped launch folder,
and Start first thread that enables once one provider is usable and a
project exists.

Shows only on a genuine cold start: local draft thread, not General Chat,
not the hosted surface, environment bootstrapped, no user message ever
sent in the environment. Skip for now, Start first thread, and any send
dismiss it permanently per environment (schema-validated localStorage,
versionSkew dismissal pattern). While the card is visible the ambient
provider-status notice is suppressed; the card already states the same
problem with the same fix actions.
The updates-available card said only which providers can be updated;
the single-provider variant already named its version in the title. The
multi-provider description now reads like Codex v1.1.0 and Claude
v2.1.197 can be updated, same one-line height.
@vercel

vercel Bot commented Aug 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
threadlines Skipped Skipped Aug 7, 2026 6:26am

Request Review

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL labels Aug 7, 2026
Screenshot verification caught the real bug: a reloaded draft thread has
no project bound yet, so the card claimed "No folder yet" while the
sidebar showed the bootstrapped workspace project. The card now falls
back to the workspace project list (and the stale memo deps that would
have hidden the fix are corrected).

Also from maintainer review of the gallery:
- The card inherits the empty state's identity: the Threadlines figure
  above the heading and the same staged rise animation
- The project row shows the project's favicon like every other project
  selector
Provider status details are written for the settings page and can run to
a paragraph with install URLs; the Claude row rendered four lines. The
card keeps the headline plus the first sentence; the full recipe stays
one click away behind the row's action.
Maintainer feedback on the verified screenshots: the full-size figure
pushed the card down until the footer crowded the composer, and a
row-per-provider list cannot grow with future providers.

- The card uses a two-thirds figure with tighter margins, slimmer row
  padding, and guaranteed clearance above the composer
- Provider rows order by actionability (sign-in, install, ready) instead
  of settings order; a checklist leads with the shortest path to one
  working agent, which also puts bundled Codex first on cold installs
- The card caps at three provider rows; the rest collapse into a single
  More agents row pointing at Settings, so four or more providers never
  stretch the checklist
@badcuban
badcuban merged commit 6d80a0c into main Aug 7, 2026
15 checks passed
@badcuban
badcuban deleted the feat/first-run-setup-card branch August 7, 2026 06:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant